package com.hanamaki.demo02;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.net.MalformedURLException;

/**
 * 1.测试 Selenium常用的 API
 */
public class SeleniumTemplate03 {

    //注册驱动
    /**
     * driver代表浏览器对象
     */
    WebDriver driver;
    @BeforeMethod
    public void setUp() {
        //注册本地火狐打开的位置
        System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");
        //初始化
        driver = new FirefoxDriver();
    }

    @Test
    public void test() throws InterruptedException, MalformedURLException {
        /* 打开资源路径的位置 */
        driver.get("file:///C:/Users/edz/Desktop/testhtml/exam/index.html");

        /* 获得网页的标签名 */
        String title = driver.getTitle();
        System.out.println(title);

        /* testNg 中 断言 预期值  实际值 */
        /* 在 testNg断言中  前边的参数 是实际值  后边的参数是预期值 */
        Assert.assertEquals(title, "房源信息");


        /* 获取 当前浏览器所在页面的url资源路径 */
        String currentUrl = driver.getCurrentUrl();
        System.out.println(currentUrl);

        /* 获得页面中 标签 显示在页面上的具体的内容值 */
        /* 定位元素  获得 元素的文本值 */
        WebElement element = driver.findElement(By.xpath("//a[@target='_self']"));
        // 获得定位到的元素的文本值
        String text = element.getText();
        System.out.println(text);
        /* 可以获得 定位到的 元素中指定的属性的属性值 */
        String target = element.getAttribute("target");
        System.out.println(target);

        /* 获得 网页指定元素的标签名 */
        String tagName = element.getTagName();
        System.out.println(tagName);

        /* 获得 当前 网页的 源代码 */
        String pageSource = driver.getPageSource();
        System.out.println(pageSource);

        /* 添加断言，判断 当前网页中是否包含 预期的信息 */
        boolean contains = pageSource.contains("房源信息");
        /* 通过断言来判断  结果是否为 true */
        /* 当前的断言  如果 contains 为  true  断言成功  如果为 false  断言失败 */
        Assert.assertTrue(contains);






    }

    @AfterClass
    public void close() {
//        driver.quit();
    }
}
